<?xml version="1.0" encoding="utf-8" standalone="no"?>

<!--

	Open Financial Exchange Specification (c)1996-2003 ("Specification") by all of its publishers: 
	CheckFree Corp., Intuit Inc., and Microsoft Corporation. All rights reserved. 

	Revision History:

	Version	Date    	Editor Email Addr    		Short Description

	p14	2002-02-03  	altenburgd@businesslogic.com	Created abstract type 'ServiceAction' 
                                                                and changed ServiceAdd, ServiceChange, 
                                                                and ServiceDelete to extend that type
        p18     2002-02-11      Gil_Clark@intuit.com            
        p21     2002-03-17      altenburgd@businesslogic.com    Renamed ServiceAction to AbstractServiceAction
        p21     2002-03-17      altenburgd@businesslogic.com    Changed elementFormDefault to "unqualified"
                                                                Changed namespace to "http://ofx.net/types/2003/04"
        p23    2002-05-13      altenburgd@businesslogic.com     Bugfixes based on Intuit Schema QA
		RC4    2003-06-24      gil_clark@intuit.com             Added collapse to fixed length, non-string types and enums.
-->

<xsd:schema targetNamespace="http://ofx.net/types/2003/04" xmlns:ofx="http://ofx.net/types/2003/04" xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="unqualified">
	<xsd:include schemaLocation="OFX_Common.xsd"/>
	<xsd:complexType name="AbstractServiceAction" abstract="true"/>
	<xsd:simpleType name="ServiceEnum">
		<xsd:annotation>
			<xsd:documentation>
        The OFX element "SERVICEENUM" is of type "ServiceEnum"
      </xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="xsd:string">
			<xsd:whiteSpace value="collapse"/>
			<xsd:enumeration value="BANKSVC"/>
			<xsd:enumeration value="BPSVC"/>
			<xsd:enumeration value="INVSVC"/>
			<xsd:enumeration value="PRESSVC"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:complexType name="ServiceAdd">
		<xsd:annotation>
			<xsd:documentation>
              The OFX element "SVCADD" is of type "ServiceAdd"
            </xsd:documentation>
		</xsd:annotation>
		<xsd:complexContent>
			<xsd:extension base="ofx:AbstractServiceAction">
				<xsd:sequence>
					<xsd:choice>
						<xsd:element name="BANKACCTTO" type="ofx:BankAccount"/>
						<xsd:element name="CCACCTTO" type="ofx:CreditCardAccount"/>
						<xsd:element name="INVACCTTO" type="ofx:InvestmentAccount"/>
						<xsd:element name="PRESACCTTO" type="ofx:PresentmentAccount"/>
					</xsd:choice>
				</xsd:sequence>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:complexType name="ServiceChange">
		<xsd:annotation>
			<xsd:documentation>
             The OFX element "SVCCHG" is of type "ServiceChange"
            </xsd:documentation>
		</xsd:annotation>
		<xsd:complexContent>
			<xsd:extension base="ofx:AbstractServiceAction">
				<xsd:sequence>
					<xsd:choice>
						<xsd:element name="BANKACCTFROM" type="ofx:BankAccount"/>
						<xsd:element name="CCACCTFROM" type="ofx:CreditCardAccount"/>
						<xsd:element name="INVACCTFROM" type="ofx:InvestmentAccount"/>
						<xsd:element name="PRESACCTFROM" type="ofx:PresentmentAccount"/>
					</xsd:choice>
					<xsd:choice>
						<xsd:element name="BANKACCTTO" type="ofx:BankAccount"/>
						<xsd:element name="CCACCTTO" type="ofx:CreditCardAccount"/>
						<xsd:element name="INVACCTTO" type="ofx:InvestmentAccount"/>
						<xsd:element name="PRESACCTTO" type="ofx:PresentmentAccount"/>
					</xsd:choice>
				</xsd:sequence>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:complexType name="ServiceDelete">
		<xsd:annotation>
			<xsd:documentation>
              The OFX element "SVCDEL" is of type "ServiceDelete"
            </xsd:documentation>
		</xsd:annotation>
		<xsd:complexContent>
			<xsd:extension base="ofx:AbstractServiceAction">
				<xsd:sequence>
					<xsd:choice>
						<xsd:element name="BANKACCTFROM" type="ofx:BankAccount"/>
						<xsd:element name="CCACCTFROM" type="ofx:CreditCardAccount"/>
						<xsd:element name="INVACCTFROM" type="ofx:InvestmentAccount"/>
						<xsd:element name="PRESACCTFROM" type="ofx:PresentmentAccount"/>
					</xsd:choice>
				</xsd:sequence>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:simpleType name="TempPassType">
		<xsd:annotation>
			<xsd:documentation>
        The OFX element "TEMPPASS" is of type "TempPassType"
      </xsd:documentation>
    </xsd:annotation>
    <xsd:restriction base="xsd:string">
      <xsd:minLength value="1"/>
      <xsd:maxLength value="32"/>
    </xsd:restriction>
  </xsd:simpleType>
</xsd:schema>
